import axios from 'axios'
import store from '@/store'
import router from '@/router'
import nProgress from 'nprogress'
import 'nprogress/nprogress.css'

const instance = axios.create({
  // baseURL: 'http://geek.itheima.net',
  baseURL: 'http://toutiao.itheima.net',

  /*  注意有时会报一个status的错误，就是因为网络太慢导致在报错的时候无法获取status
  可以在“instance.interceptors.response”进行trycatch捕获 */
  timeout: 5000
})

instance.interceptors.request.use(config => {
  // 调用请求条
  nProgress.start()

  // 在发送请求之前做些什么, 如果vuex里有token携带在请求头中
  if (store.state.login.token.length > 0 && config.headers.Authorization === undefined) {
    // 发起请求之前, 把token携带在请求头上(表明自己身份)
    config.headers.Authorization = 'Bearer ' + store.state.login.token
  }

  return config
}, err => {
  return Promise.reject(err)
})

instance.interceptors.response.use(res => {
  // 请求条结束
  nProgress.done()
  return res
}, error => {
  // 对响应错误做点什么
  // console.dir(error)
  try {
    if (error.response.status === 401) { // 身份过期
      // token续签方式1:  去登录页重新登录, token无用, 清掉-确保路由守卫if进不去
      store.commit('SETTOKEN', '')
      router.push({ path: '/login' })
    }
  } catch (error) {
    console.log('网络不好')
  }

  return Promise.reject(error)
})

export default instance
